Integrated circuits are an integral part of any electronic device. A variety of integrated circuits are often used together to enable the operation of the electronic device. While integrated circuits are typically designed for a particular application, one type of integrated circuit which enables flexibility is a programmable logic device (PLD). As will be described in more detail below, a programmable logic device is designed to be user-programmable so that users may implement logic designs of their choices. Application specific integrated circuits (ASICs) may also comprise programmable portions which enable the ASIC to function as a PLD. That is, in addition to the fixed hardware design implemented in an ASIC, a programmable logic portion may comprise programmable circuits.
As hardware systems become more complex, capturing their descriptions in a synthesizable language has become a very complex, time-consuming task. Recent efforts to alleviate some the complexity for designers has resulted in the evolution of computer languages into high-level languages (HLLs). Examples of such HLLs include but are not limited to the C language and all its variants, SystemVerilog, and dataflow languages such as CAL. These HLLs typically allow for complex systems to be described in significantly fewer lines of code, thus allowing the design cycle to be compressed and the time-to-market to be shorter. However, one drawback to the use of high level languages is the limited feedback and limited correlation between the source code entered by the user and the hardware that is produced. This limited feedback makes it difficult for users of HLL tools to optimize their designs. More specifically, the limited feedback of conventional devices makes it difficult to pinpoint the sections of the code that may be improved and to decipher how to modify the source code to make the improvements. Examples of some design optimizations include resource reduction, power reduction, and increasing the throughput and/or clock rate of the circuit design. Any type of feedback related to resource estimates and any impact on resources provided to the user in a simple format early in the design process would be extremely beneficial. Extending this feedback to PLDs, where circuit designs may be quickly modified multiple times, provides a significant advantage to a user.
While devices having programmable logic are beneficial to users, any tools which make these devices easier to implement may significantly benefit suppliers of these devices. That is, tools which make adopting a device having programmable logic easier for a user will not only impact the user but also the supplier of the devices. As circuit designs implemented in programmable logic become more complex and devices have greater density, it may be difficult for a user to determine whether the programmable logic will be able to accommodate the circuit design without running an implementation tool. Further, the run times of implementation tools for implementing circuit designs in programmable logic is often significant, requiring costly engineering time for a user and causing delays in implementing a circuit design in a PLD. With different devices having programmable logic being available to users, it may be difficult for a user not only to determine whether a device will accommodate the user's design, but also which device of many available devices is most appropriate for a given circuit design. Accordingly, any tools which help a user identify resource requirements without having to fully implement the circuit design in the PLD using implementation tools is beneficial.
Accordingly, there is a need for an improved method of estimating resource requirements for a circuit design early in the design process.